package net.csdn.business.common.annotation;

import net.csdn.business.common.enums.ProjectEnum;
import net.csdn.business.common.enums.ResourceEnum;

import java.lang.annotation.*;

/**
 * 基于项目维度的权限验证
 * 约束 获取resource资源对象， 需要有固定的uid, projectId，后续可以作为配置
 *
 * @author likun
 * @date 2022/6/17 10:31
 */
@Documented
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ProjectPermissionCheck {
    /**
     * 资源id
     *
     * @return path 表达式
     */
    String resourceId() default "";

    /**
     * 是否允许resource作者操作
     *
     * @return Boolean
     */
    boolean owner() default false;

    /**
     * 指派人
     *
     * @return boolean
     */
    boolean assign() default false;

    ResourceEnum.ObjectTypeEnum resourceType() default ResourceEnum.ObjectTypeEnum.ISSUE;

    ProjectEnum.AccessLevelEnum level() default ProjectEnum.AccessLevelEnum.DEVELOPER;
}